package com.itextpdf.text.pdf;
import com.itextpdf.testutils.CompareTool;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Image;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.junit.Before;
import org.junit.Test;
import junit.framework.Assert;
public class PdfStamperTest {
private static final String RESOURCE_FOLDER ="./src/test/resources/com/itextpdf/text/pdf/PdfStamperTest/";
private static final String DEST_FOLDER = "./target/com/itextpdf/test/pdf/PdfStamperTest/";
@Before
public void setUp() {
new File(DEST_FOLDER).mkdirs();
}
@Test
public void setPageContentTest01() throws IOException, DocumentException, InterruptedException {
String outPdf = DEST_FOLDER + "out1.pdf";
String testFile = RESOURCE_FOLDER + "in.pdf";
PdfReader reader = new PdfReader(testFile);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outPdf));
reader.eliminateSharedStreams();
int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
byte[] bb = reader.getPageContent(i);
reader.setPageContent(i, bb);
}
stamper.close();
Assert.assertNull(new CompareTool().compareByContent(outPdf, RESOURCE_FOLDER + "cmp_out1.pdf", DEST_FOLDER, "diff_"));
}
@Test
public void setPageContentTest02() throws IOException, DocumentException, InterruptedException {
String outPdf = DEST_FOLDER + "out2.pdf";
String testFile = RESOURCE_FOLDER + "in.pdf";
PdfReader reader = new PdfReader(testFile);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outPdf));
int total = reader.getNumberOfPages() + 1;
for (int i = 1; i < total; i++) {
byte[] bb = reader.getPageContent(i);
reader.setPageContent(i, bb);
}
reader.removeUnusedObjects();
stamper.close();
Assert.assertNull(new CompareTool().compareByContent(outPdf, RESOURCE_FOLDER + "cmp_out2.pdf", DEST_FOLDER, "diff_"));
}
@Test
public void layerStampingTest() throws IOException, DocumentException, InterruptedException {
String outPdf = DEST_FOLDER + "out3.pdf";
String testFile = RESOURCE_FOLDER + "House_Plan_Final.pdf";
PdfReader reader = new PdfReader(testFile);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(outPdf));
PdfLayer logoLayer = new PdfLayer("Logos", stamper.getWriter());
PdfContentByte cb = stamper.getUnderContent(1);
cb.beginLayer(logoLayer);
Image iImage = Image.getInstance(RESOURCE_FOLDER + "Willi-1.jpg");
iImage.scalePercent(24f);
iImage.setAbsolutePosition(100, 100);
cb.addImage(iImage);
cb.endLayer();
stamper.close();
Assert.assertNull(new CompareTool().compareByContent(outPdf, getClass().getResource("PdfStamperTest/cmp_House_Plan_Final.pdf").getPath(), DEST_FOLDER, "diff_"));
}
}